
#define S11								7
#define S12								12
#define S13								17
#define S14								22
#define S21								5
#define S22								9
#define S23								14
#define S24								20
#define S31								4
#define S32								11
#define S33								16
#define S34								23
#define S41								6
#define S42								10
#define S43								15
#define S44								21

typedef struct _MD5_CONTEXT
{
  UINT			uState[4];
  UINT			uCount[2];
  UCHAR			szBuffer[64];

} MD5_CONTEXT, *PMD5_CONTEXT;

VOID MD5Init(PMD5_CONTEXT pContext);
VOID MD5Update(PMD5_CONTEXT pContext, PUCHAR pInput, UINT cInput);
VOID MD5Final(PMD5_CONTEXT pContext, UCHAR szDigest[16]);
VOID MD5Transform(PUINT pState, UCHAR uchBlock[64]);

VOID GetMD5(PUCHAR pInput, UINT cInput, UCHAR szDigest[16]);
